home *** CD-ROM | disk | FTP | other *** search
/ PCMania 45 / PCMania CD45_1.iso / vb4wm / vb4-4.cab / blanker.frm < prev    next >
Text File  |  1995-10-16  |  29KB  |  760 lines

  1. VERSION 4.00
  2. Begin VB.Form DemoForm 
  3.    BackColor       =   &H00000000&
  4.    Caption         =   "Demostraci≤n de protector de pantalla"
  5.    ClientHeight    =   4425
  6.    ClientLeft      =   960
  7.    ClientTop       =   1965
  8.    ClientWidth     =   7470
  9.    BeginProperty Font 
  10.       name            =   "MS Sans Serif"
  11.       charset         =   1
  12.       weight          =   700
  13.       size            =   8.25
  14.       underline       =   0   'False
  15.       italic          =   0   'False
  16.       strikethrough   =   0   'False
  17.    EndProperty
  18.    ForeColor       =   &H00000000&
  19.    Height          =   5115
  20.    Icon            =   "BLANKER.frx":0000
  21.    Left            =   900
  22.    LinkMode        =   1  'Source
  23.    LinkTopic       =   "Form1"
  24.    ScaleHeight     =   4425
  25.    ScaleWidth      =   7470
  26.    Top             =   1335
  27.    Width           =   7590
  28.    Begin VB.Timer Timer1 
  29.       Interval        =   1
  30.       Left            =   6960
  31.       Top             =   120
  32.    End
  33.    Begin VB.CommandButton cmdStartStop 
  34.       BackColor       =   &H00000000&
  35.       Caption         =   "Comenzar la demostraci≤n"
  36.       Default         =   -1  'True
  37.       Height          =   390
  38.       Left            =   240
  39.       TabIndex        =   0
  40.       Top             =   120
  41.       Width           =   2430
  42.    End
  43.    Begin VB.PictureBox picBall 
  44.       AutoSize        =   -1  'True
  45.       BackColor       =   &H00000000&
  46.       BorderStyle     =   0  'None
  47.       ForeColor       =   &H00FFFFFF&
  48.       Height          =   480
  49.       Left            =   1800
  50.       Picture         =   "BLANKER.frx":030A
  51.       ScaleHeight     =   480
  52.       ScaleWidth      =   480
  53.       TabIndex        =   1
  54.       Top             =   720
  55.       Visible         =   0   'False
  56.       Width           =   480
  57.    End
  58.    Begin VB.Image imgMoon 
  59.       Height          =   480
  60.       Index           =   8
  61.       Left            =   6330
  62.       Picture         =   "BLANKER.frx":0614
  63.       Top             =   3765
  64.       Visible         =   0   'False
  65.       Width           =   480
  66.    End
  67.    Begin VB.Line linLineCtl 
  68.       BorderColor     =   &H00FF0000&
  69.       BorderWidth     =   5
  70.       Visible         =   0   'False
  71.       X1              =   240
  72.       X2              =   4080
  73.       Y1              =   2760
  74.       Y2              =   2760
  75.    End
  76.    Begin VB.Image imgMoon 
  77.       Height          =   480
  78.       Index           =   7
  79.       Left            =   5760
  80.       Picture         =   "BLANKER.frx":091E
  81.       Top             =   3720
  82.       Visible         =   0   'False
  83.       Width           =   480
  84.    End
  85.    Begin VB.Image imgMoon 
  86.       Height          =   480
  87.       Index           =   6
  88.       Left            =   5160
  89.       Picture         =   "BLANKER.frx":0C28
  90.       Top             =   3720
  91.       Visible         =   0   'False
  92.       Width           =   480
  93.    End
  94.    Begin VB.Image imgMoon 
  95.       Height          =   480
  96.       Index           =   5
  97.       Left            =   4560
  98.       Picture         =   "BLANKER.frx":0F32
  99.       Top             =   3720
  100.       Visible         =   0   'False
  101.       Width           =   480
  102.    End
  103.    Begin VB.Image imgMoon 
  104.       Height          =   480
  105.       Index           =   4
  106.       Left            =   3960
  107.       Picture         =   "BLANKER.frx":123C
  108.       Top             =   3720
  109.       Visible         =   0   'False
  110.       Width           =   480
  111.    End
  112.    Begin VB.Image imgMoon 
  113.       Height          =   480
  114.       Index           =   3
  115.       Left            =   3360
  116.       Picture         =   "BLANKER.frx":1546
  117.       Top             =   3720
  118.       Visible         =   0   'False
  119.       Width           =   480
  120.    End
  121.    Begin VB.Image imgMoon 
  122.       Height          =   480
  123.       Index           =   2
  124.       Left            =   2760
  125.       Picture         =   "BLANKER.frx":1850
  126.       Top             =   3720
  127.       Visible         =   0   'False
  128.       Width           =   480
  129.    End
  130.    Begin VB.Image imgMoon 
  131.       Height          =   480
  132.       Index           =   1
  133.       Left            =   2160
  134.       Picture         =   "BLANKER.frx":1B5A
  135.       Top             =   3720
  136.       Visible         =   0   'False
  137.       Width           =   480
  138.    End
  139.    Begin VB.Image imgMoon 
  140.       Height          =   480
  141.       Index           =   0
  142.       Left            =   1560
  143.       Picture         =   "BLANKER.frx":1E64
  144.       Top             =   3720
  145.       Visible         =   0   'False
  146.       Width           =   480
  147.    End
  148.    Begin VB.Shape shpClone 
  149.       BackColor       =   &H00000000&
  150.       BackStyle       =   1  'Opaque
  151.       BorderColor     =   &H00FF0000&
  152.       FillColor       =   &H000000FF&
  153.       Height          =   1215
  154.       Index           =   0
  155.       Left            =   240
  156.       Top             =   720
  157.       Visible         =   0   'False
  158.       Width           =   1410
  159.    End
  160.    Begin VB.Shape Shape1 
  161.       Height          =   15
  162.       Left            =   960
  163.       Top             =   1080
  164.       Width           =   15
  165.    End
  166.    Begin VB.Menu mnuOption 
  167.       Caption         =   "&Opciones"
  168.       Begin VB.Menu mnuLineCtlDemo 
  169.          Caption         =   "&Lφnea saltarina"
  170.          Checked         =   -1  'True
  171.       End
  172.       Begin VB.Menu mnuCtlMoveDemo 
  173.          Caption         =   "&Rebotes"
  174.       End
  175.       Begin VB.Menu mnuImageDemo 
  176.          Caption         =   "L&una giratoria"
  177.       End
  178.       Begin VB.Menu mnuShapeDemo 
  179.          Caption         =   "&Manicomio"
  180.       End
  181.       Begin VB.Menu mnuPSetDemo 
  182.          Caption         =   "&Confetti"
  183.       End
  184.       Begin VB.Menu mnuLineDemo 
  185.          Caption         =   "&Fuego cruzado"
  186.       End
  187.       Begin VB.Menu mnuCircleDemo 
  188.          Caption         =   "&Tapiz de arco iris"
  189.       End
  190.       Begin VB.Menu mnuScaleDemo 
  191.          Caption         =   "&Barra de colores"
  192.       End
  193.       Begin VB.Menu sep1 
  194.          Caption         =   "-"
  195.       End
  196.       Begin VB.Menu mnuExit 
  197.          Caption         =   "&Salir"
  198.       End
  199.    End
  200. End
  201. Attribute VB_Name = "DemoForm"
  202. Attribute VB_Creatable = False
  203. Attribute VB_Exposed = False
  204. Option Explicit
  205. ' Declara una variable para seguir el marco de la animaci≤n.
  206. Dim Shared FrameNum
  207. ' Declara las variables de las coordenadas X e Y, que mantienen la posici≤n.
  208. Dim Shared XPos
  209. Dim Shared YPos
  210. ' Declara una variable indicadora que para los procedimientos de dibujo
  211. ' de grßficos en el bucle "Do Loops".
  212. Dim Shared DoFlag
  213. ' Declara una variable para seguir los controles de movimiento.
  214. Dim Shared Motion
  215. ' Declara las variables del formulario para color.
  216. Dim R
  217. Dim G
  218. Dim B
  219.  
  220. Private Sub CircleDemo()
  221.     ' Declara variables locales.
  222.     Dim Radius
  223.     ' Crea colores RGB aleatorios.
  224.     R = 255 * Rnd
  225.     G = 255 * Rnd
  226.     B = 255 * Rnd
  227.     ' Sit·a el centro de los cφrculos en el centro del formulario.
  228.     XPos = ScaleWidth / 2
  229.     YPos = ScaleHeight / 2
  230.     ' Genera un radio comprendido entre 0 y casi la mitad de la altura
  231.     ' del formulario.
  232.     Radius = ((YPos * 0.9) + 1) * Rnd
  233.     ' Dibuja un cφrculo en el formulario.
  234.     Circle (XPos, YPos), Radius, RGB(R, G, B)
  235. End Sub
  236.  
  237. Private Sub cmdStartStop_Click()
  238. ' Declara variables locales.
  239. Dim UnClone
  240. Dim MakeClone
  241. Dim X1
  242. Dim Y1
  243.     Select Case DoFlag
  244.         Case True
  245.             cmdStartStop.Caption = "Comenzar la demostraci≤n"
  246.             DoFlag = False
  247.             mnuOption.Enabled = True
  248.             If mnuCtlMoveDemo.Checked = True Then
  249.                 ' Oculta el grßfico otra vez.
  250.                 picBall.Visible = False
  251.             ElseIf mnuLineDemo.Checked = True Then
  252.                 ' Elimina las lφneas del formulario.
  253.                 Cls
  254.             ElseIf mnuShapeDemo.Checked = True Then
  255.                 ' Elimina todos los controles de tipo "Shape" cargados
  256.                 ' dinßmicamente.
  257.                 For UnClone = 1 To 20
  258.                     Unload shpClone(UnClone)
  259.                 Next UnClone
  260.                 ' Restablece a negro el color de fondo del formulario.
  261.                 DemoForm.BackColor = QBColor(0)
  262.                 ' Limpia el formulario para que el cambio de color surta
  263.                 ' efecto.
  264.                 Refresh
  265.             ElseIf mnuPSetDemo.Checked = True Then
  266.                 ' Elimina los trozos de confeti del formulario.
  267.                 Cls
  268.             ElseIf mnuLineCtlDemo.Checked = True Then
  269.                 ' Oculta otra vez el control de lφnea.
  270.                 linLineCtl.Visible = False
  271.                 ' Quita cualquier pixel suelto que haya quedado despuΘs de
  272.                 ' esconder la lφnea.
  273.                 Cls
  274.             ElseIf mnuImageDemo.Checked = True Then
  275.                 ' Esconde el grßfico saltando otra vez.
  276.                 imgMoon(0).Visible = False
  277.             ElseIf mnuScaleDemo.Checked = True Then
  278.                 ' Borra el formulario.
  279.                 Cls
  280.                 ' Recupera la escala por defecto del formulario.
  281.                 Scale
  282.             ElseIf mnuCircleDemo.Checked = True Then
  283.                 ' Elimina los cφrculos del formulario.
  284.                 Cls
  285.             End If
  286.         Case False
  287.             cmdStartStop.Caption = "Parar la demostraci≤n"
  288.             DoFlag = True
  289.             mnuOption.Enabled = False
  290.             If mnuCtlMoveDemo.Checked = True Then
  291.                 ' Establece como visible el control del cuadro de imagen.
  292.                 picBall.Visible = True
  293.                 ' Determina el movimiento inicial del grßfico de forma aleatoria.
  294.                 ' Los valores predeterminados van de 1 a 4.  El valor de la variable Motion
  295.                 ' determina que parte del bucle "Do Loop" se ejecuta.
  296.                 Motion = Int(4 * Rnd + 1)
  297.             ElseIf mnuLineDemo.Checked = True Then
  298.                 ' Inicializa el generador de n·meros aleatorios.
  299.                 Randomize
  300.                 ' Establece el ancho de lφnea.
  301.                 DrawWidth = 2
  302.                 ' Establece las coordenadas X e Y con una posici≤n aleatoria en el formulario.
  303.                 X1 = Int(DemoForm.Width * Rnd + 1)
  304.                 Y1 = Int(DemoForm.Height * Rnd + 1)
  305.             ElseIf mnuShapeDemo.Checked = True Then
  306.                 ' Carga dinßmicamente en el formulario una matriz de controles de
  307.                 ' formas con 20 controles.
  308.                 For MakeClone = 1 To 20
  309.                     Load shpClone(MakeClone)
  310.                 Next MakeClone
  311.             ElseIf mnuPSetDemo.Checked = True Then
  312.                 ' Establece el tama±o de los trozos de confeti.
  313.                 DrawWidth = 5
  314.             ElseIf mnuLineCtlDemo.Checked = True Then
  315.                 ' Establece como visible el control de lφnea.
  316.                 linLineCtl.Visible = True
  317.                 ' Establece el grosor de lφnea tal como se verß.
  318.                 DrawWidth = 7
  319.             ElseIf mnuImageDemo.Checked = True Then
  320.                 ' Establece como visible el grßfico de control de imagen.
  321.                 imgMoon(0).Visible = True
  322.                 ' Establece la imagen de animaci≤n inicial.
  323.                 FrameNum = 0
  324.                 ' Determina el movimiento inicial del grßfico que salta.
  325.                 ' Los valores de configuraci≤n van de 1 a 4.  El valor de la variable Motion
  326.                 ' determina que parte del bucle "Do Loop" se ejecuta.
  327.                 Motion = Int(4 * Rnd + 1)
  328.             ElseIf mnuScaleDemo.Checked = True Then
  329.                 ' Inicializa el generador de n·meros aleatorios.
  330.                 Randomize
  331.                 ' Establece el contorno del cuadro para que los
  332.                 ' cuadros no se superpongan.
  333.                 DrawWidth = 1
  334.                 ' Establece el valor de la coordenada X al borde izquierdo del formulario.
  335.                 ' Establece la coordenada X del primer cuadro a 1, el segundo cuadro a 2,
  336.                 ' y asφ sucesivamente.
  337.                 ScaleLeft = 1
  338.                 ' Establece la coordenada Y de la parte superior del formulario a 10.
  339.                 ScaleTop = 10
  340.                 ' Establece el n·mero de unidades de ancho del formulario con un n·mero aleatorio
  341.                 ' comprendido entre 3 y 12.  Esto cambia el n·mero de cuadros dibujados cada vez que
  342.                 ' comienza el procedimiento.
  343.                 ScaleWidth = Int(13 * Rnd + 3)
  344.                 ' Establece el n·mero de unidades de altura del formulario a 10.  Entonces la
  345.                 ' altura de todos los cuadros va de 0 a 10, y la coordenada Y comienza en el borde
  346.                 ' inferior del formulario.
  347.                 ScaleHeight = -10
  348.             ElseIf mnuCircleDemo.Checked = True Then
  349.                 ' Define el ancho del contorno del cφrculo.
  350.                 DrawWidth = 1
  351.                 ' Dibuja cφrculos con el estilo de lφneas punteadas.
  352.                 DrawStyle = vbDash
  353.                 ' Dibuja lφneas usando el pincel XOR, combinando los colores encontrados en
  354.                 ' el pincel o en el monitor, pero no en los dos.
  355.                 DrawMode = vbXorPen
  356.             End If
  357.     End Select
  358. End Sub
  359.  
  360. Private Sub CtlMoveDemo()
  361.     Select Case Motion
  362.     Case 1
  363.         ' Mueve el grßfico a la izquierda y hacia arriba 20 twips usando el mΘtodo Move.
  364.         picBall.Move picBall.Left - 20, picBall.Top - 20
  365.         ' Si el grßfico alcanza el borde izquierdo del formulario, se mueve a la
  366.         ' derecha y hacia arriba.
  367.         If picBall.Left <= 0 Then
  368.             Motion = 2
  369.         ' Si el grßfico alcanza el borde superior del formulario, se mueve a la
  370.         ' izquierda y hacia abajo.
  371.         ElseIf picBall.Top <= 0 Then
  372.             Motion = 4
  373.         End If
  374.     Case 2
  375.         ' Mueve el grßfico a la derecha y hacia arriba 20 twips.
  376.         picBall.Move picBall.Left + 20, picBall.Top - 20
  377.         ' Si el grßfico alcanza el borde derecho del formulario, se mueve a la izquierda y
  378.         ' hacia arriba. Este procedimiento determina el borde derecho del formulario restando
  379.         ' el ancho del grßfico del ancho del formulario.
  380.         If picBall.Left >= (DemoForm.Width - picBall.Width) Then
  381.             Motion = 1
  382.         ' Si el grßfico alcanza el borde superior del formulario, se mueve a la derecha y
  383.         ' hacia abajo.
  384.         ElseIf picBall.Top <= 0 Then
  385.             Motion = 3
  386.         End If
  387.     Case 3
  388.         ' Mueve el grßfico a la derecha y hacia abajo 20 twips.
  389.         picBall.Move picBall.Left + 20, picBall.Top + 20
  390.         ' Si el grßfico alcanza el borde derecho del formulario, se mueve a la
  391.         ' izquierda y hacia abajo.
  392.         If picBall.Left >= (DemoForm.Width - picBall.Width) Then
  393.             Motion = 4
  394.         ' Si el grßfico alcanza el borde inferior del formulario, se mueve a la
  395.         ' derecha y hacia arriba. Esta rutina determina el borde inferior del formulario
  396.         ' restando la altura del grßfico de la altura del formulario menos 680 twips
  397.         ' debido a la altura de la barra de tφtulo la barra de men·s.
  398.         ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
  399.             Motion = 2
  400.         End If
  401.     Case 4
  402.         ' Mueve el grßfico a la izquierda y hacia abajo 20 twips.
  403.         picBall.Move picBall.Left - 20, picBall.Top + 20
  404.         ' Si el grßfico alcanza el borde izquierdo del formulario, se mueve a la
  405.         ' derecha y hacia abajo.
  406.         If picBall.Left <= 0 Then
  407.             Motion = 3
  408.         ' Si el grßfico alcanza el borde inferior del formulario, se mueve a la
  409.         ' izquierda y hacia arriba.
  410.         ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
  411.             Motion = 1
  412.         End If
  413.     End Select
  414. End Sub
  415.  
  416. Private Sub Delay()
  417.     Dim Start
  418.     Dim Check
  419.     Start = Timer
  420.     Do Until Check >= Start + 0.15
  421.         Check = Timer
  422.     Loop
  423. End Sub
  424.  
  425. Private Sub Form_Load()
  426.     DoFlag = False
  427. End Sub
  428.  
  429. Private Sub Form_Resize()
  430.     If mnuScaleDemo.Checked = True And DemoForm.WindowState = 0 Then
  431.         ' Inicializa el generador de n·meros aleatorios.
  432.         Randomize
  433.         ' Establece el ancho de los contornos del cuadro como estrechos para que los
  434.         ' cuadros no se superpongan.
  435.         DrawWidth = 1
  436.         ' Establece el valor de la coordenada X del lado izquierdo del formulario a 1.
  437.         ' Esto facilita el establecer la posici≤n para cada cuadro.  El primer cuadro
  438.         ' tiene la coordenada X a 1, el segundo tiene la coordenada X a 2, y asφ
  439.         ' sucesivamente.
  440.         ScaleLeft = 1
  441.         ' Establece el valor de la coordenada Y del borde superior del formulario a 10.
  442.         ScaleTop = 10
  443.         ' Establece el n·mero de unidades del ancho del formulario a un n·mero aleatorio entre
  444.         ' 3 y 12.  Esto cambia el n·mero de cuadros que son dibujados cada vez que el usuario
  445.         ' inicia este procedimiento.
  446.         ScaleWidth = Int(13 * Rnd + 3)
  447.         ' Establece el n·mero de unidades de altura del formulario a -10.  Esto tiene
  448.         ' dos efectos.  El primero, todos los cuadros tendrßn una altura que varφa de 0 a 10.
  449.         ' El segundo, el valor negativo causa que la coordenada Y empiece en el borde
  450.         ' inferior del formulario en lugar del superior.
  451.         ScaleHeight = -10
  452.     End If
  453. End Sub
  454.  
  455. Private Sub Form_Unload(Cancel As Integer)
  456.     End
  457. End Sub
  458.  
  459. Private Sub ImageDemo()
  460.     Select Case Motion
  461.     Case 1
  462.         ' Mueve el grßfico a la izquierda y hacia arriba 100 twips usando el mΘtodo Move.
  463.         imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top - 100
  464.         ' Incrementa la animaci≤n a la siguiente imagen.
  465.         IncrFrame
  466.         ' Si el grßfico alcanza el borde izquierdo del formulario, se mueve a la derecha
  467.         ' y hacia arriba.
  468.         If imgMoon(0).Left <= 0 Then
  469.             Motion = 2
  470.         ' Si el grßfico alcanza el borde superior del formulario, se mueve a la
  471.         ' izquierda y hacia abajo.
  472.         ElseIf imgMoon(0).Top <= 0 Then
  473.             Motion = 4
  474.         End If
  475.     Case 2
  476.         ' Mueve el grßfico a la derecha y hacia arriba 100 twips.
  477.         imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top - 100
  478.         ' Incrementa la animaci≤n con la siguiente imagen.
  479.         IncrFrame
  480.         ' Si el grßfico alcanza el borde derecho del formulario, se mueve a la izquierda
  481.         ' y hacia arriba. Este procedimiento determina el borde derecho del formulario restando
  482.         ' el ancho del grßfico del ancho del control.
  483.         If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
  484.             Motion = 1
  485.         ' Si el grßfico alcanza el borde superior del el formulario, se mueve a la derecha
  486.         ' y hacia abajo.
  487.         ElseIf imgMoon(0).Top <= 0 Then
  488.             Motion = 3
  489.         End If
  490.     Case 3
  491.         ' Mueve el grßfico a la derecha y hacia abajo 100 twips.
  492.         imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top + 100
  493.         ' Incrementa la animaci≤n con la siguiente imagen.
  494.         IncrFrame
  495.         ' Si el grßfico alcanza el borde derecho del formulario, se mueve a la izquierda
  496.         ' y hacia abajo.
  497.         If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
  498.             Motion = 4
  499.         ' Si el grßfico alcanza el borde inferior del formulario, se mueve a la derecha y
  500.         ' hacia arriba. Este procedimiento determina el borde inferior del formulario restando
  501.         ' la altura del grßfico de la altura del formulario menos 680 twips debido a la altura
  502.         ' de la barra del tφtulo y de la barra de men·s.
  503.         ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
  504.             Motion = 2
  505.         End If
  506.     Case 4
  507.         ' Mueve el grßfico a la izquierda y hacia abajo 100 twips.
  508.         imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top + 100
  509.         ' Incrementa la animaci≤n con la siguiente imagen.
  510.         IncrFrame
  511.         ' Si el grßfico alcanza el borde izquierdo del formulario, se mueve a la derecha y
  512.         ' hacia abajo.
  513.         If imgMoon(0).Left <= 0 Then
  514.             Motion = 3
  515.         ' Si el grßfico alcanza el borde inferior del formulario, se mueve a la izquierda y
  516.         ' hacia arriba.
  517.         ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
  518.             Motion = 1
  519.         End If
  520.     End Select
  521. End Sub
  522.  
  523. Private Sub IncrFrame()
  524.     ' Incrementa el n·mero de imagen.
  525.     FrameNum = FrameNum + 1
  526.     ' La matriz de controles con animaci≤n de imßgenes tiene elementos de 0 a 7. A
  527.     ' la octava imagen, se restablece el n·mero de imagen a 0 para un bucle de
  528.     ' animaci≤n sin fin.
  529.     If FrameNum > 8 Then
  530.         FrameNum = 1
  531.     End If
  532.     ' Establece la propiedad Picture del control de imagen con la propiedad Picture
  533.     ' de la imagen actual.
  534.     imgMoon(0).Picture = imgMoon(FrameNum).Picture
  535.     ' Se genera una pausa para que la animaci≤n no sea demasiado rßpida.
  536.     Delay
  537. End Sub
  538.  
  539. Private Sub LineCtlDemo()
  540.     ' Establece las coordenadas X e Y (posici≤n izquierda/derecha) de la posici≤n inicial de
  541.     ' la lφnea a una posici≤n aleatoria del formulario.
  542.     linLineCtl.X1 = Int(DemoForm.Width * Rnd)
  543.     linLineCtl.Y1 = Int(DemoForm.Height * Rnd)
  544.     ' Establece las coordenadas X e Y (posici≤n izquierda/derecha) de la posici≤n final de la
  545.     ' lφnea a una posici≤n aleatoria del formulario.
  546.     linLineCtl.X2 = Int(DemoForm.Width * Rnd)
  547.     linLineCtl.Y2 = Int(DemoForm.Height * Rnd)
  548.     ' Borra el formulario para eliminar cualquier pixel residual.
  549.     Cls
  550.     ' Realiza una pausa antes de mover de nuevo la lφnea.
  551.     Delay
  552. End Sub
  553.  
  554. Private Sub LineDemo()
  555.     ' Declara variables locales.
  556.     Dim X2
  557.     Dim Y2
  558.     ' Crea colores RGB aleatorios.
  559.     R = 255 * Rnd
  560.     G = 255 * Rnd
  561.     B = 255 * Rnd
  562.     ' Establece el punto de destino del control de lφnea a una posici≤n aleatoria
  563.     ' en el formulario.
  564.     X2 = Int(DemoForm.Width * Rnd + 1)
  565.     Y2 = Int(DemoForm.Height * Rnd + 1)
  566.     ' Usando el mΘtodo Line, dibuja de las coordenadas actuales al punto de destino,
  567.     ' dßndole un color aleatorio a la lφnea. Cada lφnea empieza donde acaba la ·ltima lφnea.
  568.     Line -(X2, Y2), RGB(R, G, B)
  569. End Sub
  570.  
  571. Private Sub mnuCircleDemo_Click()
  572.     Cls
  573.     mnuCtlMoveDemo.Checked = False
  574.     mnuLineDemo.Checked = False
  575.     mnuShapeDemo.Checked = False
  576.     mnuPSetDemo.Checked = False
  577.     mnuLineCtlDemo.Checked = False
  578.     mnuImageDemo.Checked = False
  579.     mnuScaleDemo.Checked = False
  580.     mnuCircleDemo.Checked = True
  581. End Sub
  582.  
  583. Private Sub mnuCtlMoveDemo_Click()
  584.     Cls
  585.     mnuCtlMoveDemo.Checked = True
  586.     mnuLineDemo.Checked = False
  587.     mnuShapeDemo.Checked = False
  588.     mnuPSetDemo.Checked = False
  589.     mnuLineCtlDemo.Checked = False
  590.     mnuImageDemo.Checked = False
  591.     mnuScaleDemo.Checked = False
  592.     mnuCircleDemo.Checked = False
  593. End Sub
  594.  
  595. Private Sub mnuExit_Click()
  596.     End
  597. End Sub
  598.  
  599. Private Sub mnuImageDemo_Click()
  600.     Cls
  601.     mnuCtlMoveDemo.Checked = False
  602.     mnuLineDemo.Checked = False
  603.     mnuShapeDemo.Checked = False
  604.     mnuPSetDemo.Checked = False
  605.     mnuLineCtlDemo.Checked = False
  606.     mnuImageDemo.Checked = True
  607.     mnuScaleDemo.Checked = False
  608.     mnuCircleDemo.Checked = False
  609. End Sub
  610.  
  611. Private Sub mnuLineCtlDemo_Click()
  612.     Cls
  613.     mnuCtlMoveDemo.Checked = False
  614.     mnuLineDemo.Checked = False
  615.     mnuShapeDemo.Checked = False
  616.     mnuPSetDemo.Checked = False
  617.     mnuLineCtlDemo.Checked = True
  618.     mnuImageDemo.Checked = False
  619.     mnuScaleDemo.Checked = False
  620.     mnuCircleDemo.Checked = False
  621. End Sub
  622.  
  623. Private Sub mnuLineDemo_Click()
  624.     Cls
  625.     mnuCtlMoveDemo.Checked = False
  626.     mnuLineDemo.Checked = True
  627.     mnuShapeDemo.Checked = False
  628.     mnuPSetDemo.Checked = False
  629.     mnuLineCtlDemo.Checked = False
  630.     mnuImageDemo.Checked = False
  631.     mnuScaleDemo.Checked = False
  632.     mnuCircleDemo.Checked = False
  633. End Sub
  634.  
  635. Private Sub mnuPSetDemo_Click()
  636.     Cls
  637.     mnuCtlMoveDemo.Checked = False
  638.     mnuLineDemo.Checked = False
  639.     mnuShapeDemo.Checked = False
  640.     mnuPSetDemo.Checked = True
  641.     mnuLineCtlDemo.Checked = False
  642.     mnuImageDemo.Checked = False
  643.     mnuScaleDemo.Checked = False
  644.     mnuCircleDemo.Checked = False
  645. End Sub
  646.  
  647. Private Sub mnuScaleDemo_Click()
  648.     Cls
  649.     mnuCtlMoveDemo.Checked = False
  650.     mnuLineDemo.Checked = False
  651.     mnuShapeDemo.Checked = False
  652.     mnuPSetDemo.Checked = False
  653.     mnuLineCtlDemo.Checked = False
  654.     mnuImageDemo.Checked = False
  655.     mnuScaleDemo.Checked = True
  656.     mnuCircleDemo.Checked = False
  657. End Sub
  658.  
  659. Private Sub mnuShapeDemo_Click()
  660.     Cls
  661.     mnuCtlMoveDemo.Checked = False
  662.     mnuLineDemo.Checked = False
  663.     mnuShapeDemo.Checked = True
  664.     mnuPSetDemo.Checked = False
  665.     mnuLineCtlDemo.Checked = False
  666.     mnuImageDemo.Checked = False
  667.     mnuScaleDemo.Checked = False
  668.     mnuCircleDemo.Checked = False
  669. End Sub
  670.  
  671. Private Sub PSetDemo()
  672.     ' Crea colores RGB aleatorios.
  673.     R = 255 * Rnd
  674.     G = 255 * Rnd
  675.     B = 255 * Rnd
  676.     ' XPos establece la posici≤n horizontal de un bit de confeti con una
  677.     ' posici≤n aleatoria del formulario.
  678.     XPos = Rnd * ScaleWidth
  679.     ' YPos establece la posici≤n vertical de un bit de confeti con una
  680.     ' posici≤n aleatoria del formulario.
  681.     YPos = Rnd * ScaleHeight
  682.     ' Dibuja un bit de confeti en XPos, YPos. Asigna un color aleatorio
  683.     ' al bit de confeti.
  684.     PSet (XPos, YPos), RGB(R, G, B)
  685. End Sub
  686.  
  687. Private Sub ScaleDemo()
  688.     ' Declara variables locales.
  689.     Dim Box
  690.     ' Crea el mismo n·mero de cuadros que el ancho del formulario.
  691.     For Box = 1 To ScaleWidth
  692.     ' Crea colores RGB aleatorios.
  693.         R = 255 * Rnd
  694.         G = 255 * Rnd
  695.         B = 255 * Rnd
  696.         ' Dibuja cuadros usando el mΘtodo Line con las opciones B (cuadro) F (relleno).
  697.         ' Los cuadros empiezan en la coordenada X determinada por ScaleWidth y en la
  698.         ' coordenada Y de 0 (parte inferior del formulario). Cada cuadro tiene una
  699.         ' anchura de 1 y tiene una altura aleatoria entre 0 y 10. Llena el cuadro con
  700.         ' un color aleatorio.
  701.         Line (Box, 0)-Step(1, (Int(11 * Rnd))), RGB(R, G, B), BF
  702.     Next Box
  703.     ' Realiza una pausa para mostrar todos los cuadros antes de volver a dibujar.
  704.     Delay
  705. End Sub
  706.  
  707. Private Sub ShapeDemo()
  708.     ' Declara variables locales.
  709.     Dim CloneID
  710.     ' Crea colores RGB aleatorios.
  711.     R = 255 * Rnd
  712.     G = 255 * Rnd
  713.     B = 255 * Rnd
  714.     ' Establece el color de fondo del formulario con un valor aleatorio.
  715.     DemoForm.BackColor = RGB(R, G, B)
  716.     ' Selecciona un control figura aleatorio en la matriz de controles.
  717.     CloneID = Int(20 * Rnd + 1)
  718.     ' XPos y YPos establece la posici≤n del control de forma seleccionado
  719.     ' una posici≤n aleatoria en el formulario.
  720.     XPos = Int(DemoForm.Width * Rnd + 1)
  721.     YPos = Int(DemoForm.Height * Rnd + 1)
  722.     ' Establece la figura del control de forma seleccionado una figura aleatoria.
  723.     shpClone(CloneID).Shape = Int(6 * Rnd)
  724.     ' Establece el alto y ancho de un control de forma seleccionado un tama±o aleatorio entre
  725.     ' 500 y 2500 twips.
  726.     shpClone(CloneID).Height = Int(2501 * Rnd + 500)
  727.     shpClone(CloneID).Width = Int(2501 * Rnd + 500)
  728.     ' Establece el color de fondo y la propiedad DrawMode del control de forma con un color
  729.     ' aleatorio.
  730.     shpClone(CloneID).BackColor = QBColor(Int(15 * Rnd))
  731.     shpClone(CloneID).DrawMode = Int(16 * Rnd + 1)
  732.     ' Mueve el control de forma seleccionado a XPos, YPos.
  733.     shpClone(CloneID).Move XPos, YPos
  734.     ' Establece como visible el control de forma seleccionado.
  735.     shpClone(CloneID).Visible = True
  736.     ' Espera brevemente antes de seleccionar y cambiar el pr≤ximo control de forma.
  737.     Delay
  738. End Sub
  739.  
  740. Private Sub Timer1_Timer()
  741.     If mnuCtlMoveDemo.Checked And DoFlag = True Then
  742.         CtlMoveDemo
  743.     ElseIf mnuLineDemo.Checked And DoFlag = True Then
  744.         LineDemo
  745.     ElseIf mnuShapeDemo.Checked And DoFlag = True Then
  746.         ShapeDemo
  747.     ElseIf mnuPSetDemo.Checked And DoFlag = True Then
  748.         PSetDemo
  749.     ElseIf mnuLineCtlDemo.Checked And DoFlag = True Then
  750.         LineCtlDemo
  751.     ElseIf mnuImageDemo.Checked And DoFlag = True Then
  752.         ImageDemo
  753.     ElseIf mnuScaleDemo.Checked And DoFlag = True Then
  754.         ScaleDemo
  755.     ElseIf mnuCircleDemo.Checked And DoFlag = True Then
  756.         CircleDemo
  757.     End If
  758. End Sub
  759.  
  760.